package br.com.news.web;

import java.io.Serializable;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import org.springframework.util.StringUtils;

import br.com.news.utils.database.beans.CategoriaBean;
import br.com.news.utils.database.beans.UsuarioBean;
import br.com.news.utils.database.beans.enums.Perfil;
import br.com.news.web.annotations.Permission;

@Permission(profile={Perfil.ADMINISTRADOR})
@ViewScoped
@ManagedBean
public class CategoriaMB extends BaseMB implements Serializable {

	private static final long serialVersionUID = 1L;
	
	public static final String ROUTE = "categoria.xhtml";

	private List<CategoriaBean> categoriasAtivas;
	
	private List<CategoriaBean> categorias;
	
	private CategoriaBean buscarCategoria;
	
	public CategoriaMB() {
		limpar();
	}
	
	
	public void limpar(){
		buscarCategoria = new CategoriaBean();
		buscarCategoria.setStatus(true);
		categoriasAtivas = getCategoriaService().categoriasAtivas();
	}
	
	public void buscar() {
		if (buscarCategoria != null) {
			categorias = getCategoriaService().findByExample(buscarCategoria);
		}
	}
	
	public void editar(CategoriaBean categoria) {
		buscarCategoria = categoria;
	}
	
	public void salvar() {
		if (buscarCategoria != null){
			if (buscarCategoria.getDescricao().equals("")) {
				addErrorMessage("Favor preencher a descrição!");
				return;
			}
			if (buscarCategoria.getUrlRss().equals("")) {
				addErrorMessage("Favor preencher a url da RSS!");
				return;
			}
		} 
		if (buscarCategoria != null && StringUtils.hasLength(buscarCategoria.getDescricao())) {
			if (buscarCategoria.getIdCategoria() != null) {
				getCategoriaService().update(buscarCategoria);
				addInfoMessage("Categoria editado com sucesso!");
			} else {
				getCategoriaService().save(buscarCategoria);
			}
			
			buscarCategoria = new CategoriaBean();
			buscarCategoria.setStatus(true);
			buscar();
		} else {
			addErrorMessage("formCadastroCategoria", "A Descrição deve ser preenchida!");
		}
	}
	
	public List<CategoriaBean> getCategorias() {
		return categorias;
	}

	public void setCategorias(List<CategoriaBean> categorias) {
		this.categorias = categorias;
	}

	public CategoriaBean getBuscarCategoria() {
		return buscarCategoria;
	}

	public void setBuscarCategoria(CategoriaBean buscarCategoria) {
		this.buscarCategoria = buscarCategoria;
	}

	public List<CategoriaBean> getCategoriasAtivas() {
		return categoriasAtivas;
	}

	public void setCategoriasAtivas(List<CategoriaBean> categoriasAtivas) {
		this.categoriasAtivas = categoriasAtivas;
	}
	
}
